﻿using RayDen.Library.Core;
using RayDen.Library.Core.Primitives;
using RayDen.Library.Entity.Scene;

namespace RayDen.SmallPT.Light
{
    public interface ILight
    {
        string Name { get; }
        bool IsDelta { get; }
        RgbSpectrum Le(Vector dir);
        RgbSpectrum Sample(ref Point point, ref Normal n, float u0, float u1, float u2, out RayInfo ray, out float pdf);
        RgbSpectrum SamplePhoton(SceneGeometryInfo scene, float u0, float u1, float u2, float u3, float u4, out float pdf, out RayInfo ray);
    }
}